The present invention relates to computer technology. More particularly, the invention relates to a method and an apparatus for migrating the system environment on which applications depend, from one platform to another.
With the rapid development of the information technology, the lifecycle of hardware and software tends to be shorter and shorter while the price to be lower and lower. Thus, enterprises often decide to update their software and hardware to meet their business requirements. At the same time, it is extremely desirable to migrate original application systems to a newly-built platform easily in order to fully utilize the existing investment on the application systems and reduce the cost and time of the migration.
In operating systems (OS), such as Unix/Linux, most applications cannot operate correctly without the support of OS services. So, one precondition of a successful application migration is to firstly migrate the system services on which the applications depend so as to supply a consistent operating environment on a target platform.
Even though the cost for updating hardware and software has been reduced due to the continuous raising of the performance-cost ratio, it is a highly time-consuming and labor-intensive process to migrate a system environment from an original OS platform to a target platform, and also with a great risk, particularly in a large data center or computing center. In such a case, it is always needed to migrate hundreds or even thousands of servers at one time. The applications dependant on system services cannot run correctly on the target platform without the successful migration of these system services, which, as a result, greatly degrades the business value of software/hardware updating.
Though there are several methods for assisting in application migration, few of them can solve the problem of migrating the configuration settings of the system services on which applications depend, so that the migrated applications likely cannot operate correctly. Further, among existing methods of system environment migration, none of them migrates only the system services on which the applications to be migrated depend directly or indirectly. During migration, a common method is to migrate all of the system services, regardless of whether they are really required by the applications to be migrated. Although it is a safe method to ensure that the same applications may not fail for some missing system services, but it is a time consuming and resource consuming migration method. In a large data center or computing center, in general, only one application or a few applications are deployed on a separate machine/platform to provide high performance and high reliability. As an example, an application needs to read files from a NFS server; then only the relevant services such as NFS, DNS and TCP/IP are required by the application, and other system services such as SSH, FTP, Inittab need not to be migrated. Hence, a more reasonable and more efficient migration method is to only migrate the system services on which the application depends directly or indirectly. In this way, the migration can be done more quickly, and can avoid the disadvantage of lacking some necessary system services. Another disadvantage of a common method for migrating system services is that it must be done manually, and not automatically. As is known by those skilled in the art, usually the process of migration is tedious, and involves many configurations of the system services. Therefore, it will be fallible without automatic support.
Further, when migrating system services, an existing method migrates specific configurations from one server to another serially. In general, there are many system services on a server, and there are many configurations about a system service. Thus, especially in large-scale system migration, a serial method will take more time and cost to complete the whole migration process. As known by those skilled in the art, although a lot of system services are to be migrated to target OS platforms, most of the system services have the same configurations on a plurality of servers located in a large data center/computing center, and only a few of them have server-specified values. Hence, a reasonable and feasible method is to fully utilize the common configuration settings of the system services to facilitate the migration of system services from a group of source operating system platforms to a group of target platforms in order to, for example, detect and correct configurations errors after the migration.
A method for migrating applications from a source computing platform to a target computing platform with a specific script is disclosed in the U.S. Pat. No. 6,370,646B, titled “Method and Apparatus for Multiplatform migration”. Although this method can meet some requirements of migration, it is based on the assumption that the environment (that of the source and the target) on which applications depend is always available. And it is intended to acquire the configurations of the applications to be migrated, and focus on the migration of the applications themselves. It is necessary to develop different scripts or codes for different applications on the same source platform. As known by those skilled in the art, the success of migration depends on the running environment of the applications to a great extent. This method is only a specific method for application migration, and only takes the configurations information of the applications into account, but not considering the system environment on which applications depend. However, migrating applications without considering the system environment on which the applications depend is likely to fail.
A method for automatically migrating at least one software system on a source computing environment to a predetermined target computing environment is disclosed in the U.S. Pat. No. 5,678,044, titled “System and method for improved re-hosting of software systems”. In general, the automatic migration method can be divided into three stages: the first is that a discovery utility evaluates the source computing environment and the software system to be migrated automatically, including acquiring the relevant configuration and description information thereof and finally forms an analysis report from such information. Then, based on the analysis report, the discovery utility determines whether the migration can be done with heuristic rules. The second is that a migration utility receives the acquiring results of the description information about the source computing environment and the software system to be migrated from the discovery utility in order to migrate the software system to a target computing environment automatically. Naturally, due to the difference between the two computing systems, the migration utility will convert the configuration files, programs and job control languages of the source software system into the descriptions suitable to the target system. The third is that a run-time service utility provides similar OS level support to that of the source computing environment for the software system migrated to the target computing environment. However, the method focuses on the migration of a software system, including programs, job control languages and data files, but not the migration of the system services on which applications depend. Because of the dependence of a software system on system services, migrating a software system merely cannot succeed. Although in that method, the information about the source computing environment is obtained, and it is also specified to provide similar OS level support by the run-time service utility in the target computing environment, actually system services are not migrated. In fact, in this method, the information about what run-time OS level services exist in the source computing environment is obtained, and then such services are provided in the target computing environment. But this method does not emphasize migrating only the services related to the software system to be migrated, neglecting unrelated ones, and it is not obvious to find out what services are related to the software system. In addition, a computing environment may comprise several computers, hence, migrating system services from a source computing environment to a target computing environment may relate to many-to-many migration, which is not considered in this method.
A method for migrating configurations and data on a Linux OS to a Windows OS automatically is proposed in US patent application No. US20060064474A1, titled “System and method for automated migration from Linux to Windows”. This method firstly finds out a list of machines in a network, and selects an available machine to be migrated and a migration target. Then it evaluates the migration target, for example, determines whether a proper OS and services for which the configurations on the source computing environment need to be migrated are installed, and if not, installs them automatically. Secondly, it finds out the configurations on the source computing environment automatically, and then converts them to the configurations on the target computing environment by a configuration converting utility. At last, this method sets the configurations on the target machine automatically. Especially, it is described specifically in this patent that if there is a directory server in a network, the directory service can be migrated to a new machine automatically. However, the object of this patent is still to form a similar target machine to the source machine, so all the system services on the source machine and their configurations are migrated to the target machine, rather than only migrating the system services related to the upper level software system to be migrated and not the unrelated ones. In addition, this patent does not relate to the problem of dividing the system services in the source computing environments on multiple platforms into common configurations and specific configurations and treating them separately when migrating them from one computing environment to another computing environment. Further, this method focuses on the migration from Linux to Windows, instead of a migration that can be applied generally between various platforms.
A tool capable of migrating user selected software from one machine to another automatically is disclosed in US patent publication No. US20030172373A1, titled “Non-script based intelligent migration tool capable of migrating software selected by a user, including software for which said migration tool has had no previous knowledge or encounters”. The tool is a non-script based tool, and does not require knowledge about the software to be migrated in advance. First, the tool scans a specified machine, including the directories and files thereof, and then organizes the scanning result in some way, such as by the names of the directories, files, etc., then assigns such information to a certain application group based on some rules. Application groups to be evaluated are generated according to the foregoing steps, and then are analyzed to select application groups with complete configuration information. On the other hand, the tool compares the target machine with the source machine to remove software unnecessary to be migrated. Finally, it combines the results of the above two steps to present selectable software for a user. When the user has selected one or more software, the tool begins the migration. However, this tool concerns the migration of a software system other than the migration of the system services on which applications depend. Because of the dependence between a software system and system services, without migrating the system services successfully, migrating a software system merely cannot succeed. In addition, as described in that application, only the files and data belonging to the software itself are found, but not the configurations of the system services on which the applications depend. The tool first scans all the information on a machine, and then carries out classification based on specific rules to determine the information possibly relevant to the software to be migrated, rather than obtaining information about the dependence on the system services through monitoring the software at run-time, or through user input, Strictly speaking, since the information about the system services on which applications depend cannot be obtained by the classification method of the tool, such system services cannot be determined by the tool. Moreover, the system services are hierarchical, that is, an application may depend on some system services, and these services may depend on some other services also. The tool of that application cannot obtain such information. Finally, that application does not relate to the problem of dividing configuration information of the system services on multiple platforms into common configuration information and specific configuration information, and therefore, does not include one-to-many and many-to-many migrations.
A method for migrating configuration data of an existing program to another new program is proposed in US patent publication No US20030130980A1, titled “Efficient configuration data migration technical”. This method installs a function module in the program to be migrated for collecting relevant configuration information every time the program is executed, and then writing them in an internal table. When migrating, data stored in the internal table are converted into a format suitable for the target program, i.e., formed into the configuration file of the target program to complete the migration. However, the method is complicated as it obtains the configuration information of the program to be migrated by changing the source program. Moreover, the method can only find out the configuration data associated with the program itself, but not the configuration data of the system services on which the program depends. Also, the configurations of the system services on which the program depends are hierarchical, and that method cannot obtain the information about the system services on which an upper level application depends indirectly. Again, the method does not concern the problem of one-to-many and many-to-many migrations, and so does not relate to distinguishing between common configurations and specific configurations on multiple platforms to facilitate the migration.
Hence, a method and an apparatus is desirable for migrating only the system services on which applications depend directly or indirectly, and when performing migration related to multiple servers, utilizing the fact that system services share some common configurations on a plurality of servers to facilitate detection and correcting configuration errors occurring after the migration.